home *** CD-ROM | disk | FTP | other *** search
/ Aminet 15 / Aminet 15 - Nov 1996.iso / Aminet / util / misc / fifolib38_3upd.lha / fifo-383.diffs next >
Encoding:
Text File  |  1996-08-29  |  16.7 KB  |  554 lines

  1. diff -c2 unused:source/fifolib382/version.doc version.doc
  2. *** unused:source/fifolib382/version.doc    Wed Mar 27 08:47:26 1996
  3. --- version.doc    Wed Aug 28 21:38:57 1996
  4. ***************
  5. *** 4,7 ****
  6. --- 4,10 ----
  7.           The next version shall be >=2.0 only and thus become smaller.
  8.   
  9. +     38.3
  10. +         Introducing Ctrl-C/D/E/F and Ctrl-\ handling in cooked mode.
  11.       38.2
  12.           Processed cooked input is no more ignored in raw mode.  Cooked
  13. Common subdirectories: unused:source/fifolib382/bin and bin
  14. Common subdirectories: unused:source/fifolib382/clib and clib
  15. Only in : config.cache
  16. Only in : config.log
  17. Only in : config.status
  18. Common subdirectories: unused:source/fifolib382/fd and fd
  19. Only in : fifo-383.diffs
  20. Only in : fifo-handler
  21. Only in : fifo-handler-debug
  22. Only in : fifo-handler-debug.o
  23. diff -c2 unused:source/fifolib382/fifo-handler.c fifo-handler.c
  24. *** unused:source/fifolib382/fifo-handler.c    Mon May 13 23:07:22 1996
  25. --- fifo-handler.c    Wed Aug 28 23:40:50 1996
  26. ***************
  27. *** 42,45 ****
  28. --- 42,46 ----
  29.   void returnpacket(DosPacket *);
  30.   static inline char not_console(char *, unsigned char);
  31. + static inline short line1_length(FHan *);
  32.   void xprintf(char *, ...);
  33.   FHan *OpenHandle(char *, char *, long, long);
  34. ***************
  35. *** 71,75 ****
  36.   short        Done;    /*  could be local, but DICE2.06 uses up a register */
  37.   
  38. ! const char verstring[] = "\0$VER: fifo-handler 38.2 (8.5.96)\r\n";
  39.   
  40.   
  41. --- 72,76 ----
  42.   short        Done;    /*  could be local, but DICE2.06 uses up a register */
  43.   
  44. ! const char verstring[] = "\0$VER: fifo-handler 38.3 (28.8.96)\r\n";
  45.   
  46.   
  47. ***************
  48. *** 132,135 ****
  49. --- 133,152 ----
  50.   }
  51.   
  52. + static inline short
  53. + line1_length(FHan *han)
  54. + {
  55. +     short m = 0;
  56. +     short n = han->ff_CookIdx;
  57. +     if (n != 0) {
  58. +     --n;
  59. +     do { char c = han->ff_CookBuf[m];
  60. +          if (c == CHAR_EOF) return m;
  61. +          m++;
  62. +          if (c == '\n') return m;
  63. +     } while (--n != -1);    /*  make GCC generate dbra */
  64. +     }
  65. +     return -1;
  66. + }
  67.   #if !defined(__GNUC__)
  68.   __stkargs int            /*  changed from void (jch) */
  69. ***************
  70. *** 386,425 ****
  71.   
  72.           han->ff_Flags &= ~FHF_STARTCOOK; /*  restarted below */
  73. !         if (han->ff_CookBuf && han->ff_CookIdx) {
  74. !             n = strlen(han->ff_CookBuf);
  75. !             /*  read processed cooked input even in raw mode */
  76. !             if (!(han->ff_Flags & FHF_COOKED)
  77. !               || n != han->ff_CookIdx /* || han->ff_LRet superfluous */) {
  78. !             short add1 = (han->ff_Flags & FHF_COOKED || n != han->ff_CookIdx)
  79. !               ? n++    : -1;    /*  add the newline character */
  80. !             D(ebug("Can read %ld chars\n", n));
  81. !             if (n > packet->dp_Arg3)
  82. !                 n = packet->dp_Arg3;
  83. !             else if (add1 >= 0)
  84. !                 han->ff_CookBuf[add1] = '\n';
  85. !             memmove((void *)packet->dp_Arg2, han->ff_CookBuf, n);
  86. !             han->ff_CookIdx -= n;
  87. !             /*  overlapping memory! */
  88. !             memmove(han->ff_CookBuf, han->ff_CookBuf + n, han->ff_CookIdx + 1);
  89. !             if (han->ff_CookIdx == 0)
  90. !                 han->ff_LRet = 0;
  91. !             packet->dp_Res1 = n;
  92.   
  93.               /*
  94. !              *  if we blocked on reading the fifo to cook more
  95. !              *  data, we unblock it here.
  96.                */
  97.   
  98. !             han->ff_Flags &= ~FHF_COOKBFUL;
  99.   
  100. !             if (han->ff_Flags & FHF_COOKED &&
  101. !                 !(han->ff_Flags & FHF_RPEND)) {
  102. !                 RequestFifo(han->ff_FifoR, &han->ff_RdMsg, FREQ_RPEND);
  103. !                 han->ff_Flags |= FHF_RPEND;
  104. !             }
  105. !             break;
  106.               }
  107.           }
  108.           if (!(han->ff_Flags & FHF_COOKED)) {
  109. --- 403,455 ----
  110.   
  111.           han->ff_Flags &= ~FHF_STARTCOOK; /*  restarted below */
  112. !         if (han->ff_CookBuf
  113. !           && ((han->ff_Flags & FHF_COOKED)
  114. !               ? (0 <= han->ff_CookLen1)
  115. !               : han->ff_CookIdx)) {
  116. !             /*
  117. !              *    cooked input is available
  118. !              *    do not read too much in raw mode, a line at a time
  119. !              *    this code will fail for dp_Arg3 (# to read) == 0 in raw mode
  120. !              */
  121.   
  122. +             n = han->ff_CookLen1; /*  0 means EOF */
  123. +             D(ebug("Can read %ld chars\n", n));
  124. +             if (n > packet->dp_Arg3)
  125. +             n = packet->dp_Arg3;
  126. +             {
  127. +             long m = n;
  128.               /*
  129. !              *  CON: sends EOF in raw mode for a cooked EOF read
  130. !              *  I choose to transmit ctrl-\ because FIFO: is
  131. !              *  likely to receive pre-"typed", non-manual input
  132.                */
  133. +             if (m == 0 && !(han->ff_Flags & FHF_COOKED)) m = 1;
  134.   
  135. !             packet->dp_Res1 = m;
  136. !             memmove((void *)packet->dp_Arg2, han->ff_CookBuf, m);
  137. !             }
  138. !             if (n == 0) n = 1; /*  skip EOF marker */
  139. !             han->ff_CookIdx -= n;
  140. !             /*  overlapping memory! */
  141. !             memmove(han->ff_CookBuf, han->ff_CookBuf + n, han->ff_CookIdx);
  142.   
  143. !             if (n < han->ff_CookLen1) {
  144. !             han->ff_CookLen1 -= n;
  145. !             } else {
  146. !             han->ff_CookLen1 = line1_length(han);
  147. !             }
  148. !             /*
  149. !              *    if we blocked on reading the fifo to cook more
  150. !              *    data, we unblock it here.
  151. !              */
  152. !             han->ff_Flags &= ~FHF_COOKBFUL;
  153. !             if (han->ff_Flags & FHF_COOKED &&
  154. !             !(han->ff_Flags & FHF_RPEND)) {
  155. !             RequestFifo(han->ff_FifoR, &han->ff_RdMsg, FREQ_RPEND);
  156. !             han->ff_Flags |= FHF_RPEND;
  157.               }
  158. +             break;
  159.           }
  160.           if (!(han->ff_Flags & FHF_COOKED)) {
  161. ***************
  162. *** 434,439 ****
  163.               }
  164.               if (n > 0) {
  165. !             /* Hans Verkuil introduced a patch to only read upto \n,
  166. !              * however RAW: does not exhibit this behaviour.
  167.                */
  168.               if (n > packet->dp_Arg3)
  169. --- 464,469 ----
  170.               }
  171.               if (n > 0) {
  172. !             /*  Hans Verkuil introduced a patch to only read upto \n,
  173. !              *  however RAW: does not exhibit this behaviour.
  174.                */
  175.               if (n > packet->dp_Arg3)
  176. ***************
  177. *** 440,443 ****
  178. --- 470,475 ----
  179.                   n = packet->dp_Arg3;
  180.               CopyMem(ptr, (void *)packet->dp_Arg2, n);
  181. +             packet->dp_Res1 = n;
  182.               if (ReadFifo(han->ff_FifoR, &ptr, n) < 0)
  183.                   han->ff_Flags |= FHF_REOF;
  184. ***************
  185. *** 448,452 ****
  186.                *  unblocking from a full buffer.
  187.                */
  188. -             packet->dp_Res1 = n;
  189.               break;
  190.               }
  191. --- 480,483 ----
  192. ***************
  193. *** 487,491 ****
  194.           }
  195.   
  196.           /*
  197.            *  check for output stopped due to pending input line
  198. --- 518,521 ----
  199. ***************
  200. *** 495,499 ****
  201.            */
  202.   
  203. !         if ((han->ff_Flags & FHF_COOKED) && han->ff_CookIdx && han->ff_LRet == 0) {
  204.               packet->dp_Arg3 = -packet->dp_Arg3;
  205.               AddTail((MaxList *)&han->ff_WrWait, &packet->dp_Link->mn_Node);
  206. --- 525,529 ----
  207.            */
  208.   
  209. !         if ((han->ff_Flags & FHF_COOKED) && (han->ff_Flags & FHF_WISTOP)) {
  210.               packet->dp_Arg3 = -packet->dp_Arg3;
  211.               AddTail((MaxList *)&han->ff_WrWait, &packet->dp_Link->mn_Node);
  212. ***************
  213. *** 503,507 ****
  214.           }
  215.   
  216.           /*
  217.            *  limit size of writes to fifo to something the fifo can
  218. --- 533,536 ----
  219. ***************
  220. *** 633,637 ****
  221.           }
  222.           if (han->ff_Flags & FHF_COOKED) {
  223. !             if (han->ff_LRet || strlen(han->ff_CookBuf) != han->ff_CookIdx) {
  224.               packet->dp_Res1 = DOS_TRUE;
  225.               break;
  226. --- 662,666 ----
  227.           }
  228.           if (han->ff_Flags & FHF_COOKED) {
  229. !             if (0 <= han->ff_CookLen1) {
  230.               packet->dp_Res1 = DOS_TRUE;
  231.               break;
  232. ***************
  233. *** 676,680 ****
  234.           packet->dp_Type = ACTION_WAIT_CHAR;
  235.           if (((WaitTreq *)packet->dp_Res1)->wt_packet) {
  236. !             /*  input is available */
  237.           struct IORequest *ior = (struct IORequest *)packet->dp_Res1;
  238.   
  239. --- 705,709 ----
  240.           packet->dp_Type = ACTION_WAIT_CHAR;
  241.           if (((WaitTreq *)packet->dp_Res1)->wt_packet) {
  242. !         /*  input is available */
  243.           struct IORequest *ior = (struct IORequest *)packet->dp_Res1;
  244.   
  245. ***************
  246. *** 698,703 ****
  247.           break;
  248.       case FACTION_SCREEN_MODE:   /*    Mode                Bool:TRUE */
  249. !         /* As ACTION_SCREEN_MODE does not give a filehandle, we get it
  250. !          * indirectly through the special port. Fold packet type for safety.
  251.            */
  252.           packet->dp_Type = ACTION_SCREEN_MODE;
  253. --- 727,732 ----
  254.           break;
  255.       case FACTION_SCREEN_MODE:   /*    Mode                Bool:TRUE */
  256. !         /*  As ACTION_SCREEN_MODE does not give a filehandle, we get it
  257. !          *  indirectly through the special port. Fold packet type for safety.
  258.            */
  259.           packet->dp_Type = ACTION_SCREEN_MODE;
  260. ***************
  261. *** 708,716 ****
  262.   
  263.           if (han->ff_CookBuf == NULL) {    /*  also NULL when !FHF_READ */
  264. !             /* Normally     a shell uses cooked mode and programs might
  265. !              * also set cooked mode at exit. Thus if the
  266. !              * application did not open FIFO: in cooked mode, it
  267. !              * had good reasons to do so and we refuse any change.
  268. !              * At least this is good for GNUEmacs (uses "rwesK").
  269.                */
  270.               packet->dp_Res2 = ERROR_OBJECT_WRONG_TYPE;
  271. --- 737,745 ----
  272.   
  273.           if (han->ff_CookBuf == NULL) {    /*  also NULL when !FHF_READ */
  274. !             /*  Normally a shell uses cooked mode and programs might
  275. !              *  also set cooked mode at exit. Thus if the
  276. !              *  application did not open FIFO: in cooked mode, it
  277. !              *  had good reasons to do so and we refuse any change.
  278. !              *  At least this is good for GNUEmacs (uses "rwesK").
  279.                */
  280.               packet->dp_Res2 = ERROR_OBJECT_WRONG_TYPE;
  281. ***************
  282. *** 721,725 ****
  283.           if (DOSFALSE != packet->dp_Arg1) {    /*  RAW */
  284.               if (han->ff_Flags & FHF_COOKED) {
  285. !             han->ff_Flags &= ~(FHF_COOKED|FHF_STARTCOOK|FHF_WIHOLD|FHF_COOKECHOBLK /*|FHF_COOKBFUL --still full */);
  286.   
  287.               /*  cooked input is available, unblock readers and timers */
  288. --- 750,758 ----
  289.           if (DOSFALSE != packet->dp_Arg1) {    /*  RAW */
  290.               if (han->ff_Flags & FHF_COOKED) {
  291. !             /*
  292. !              *  this differs from CON: which unblocks neither
  293. !              *  readers nor writers until the next character is read
  294. !              */
  295. !             han->ff_Flags &= ~(FHF_COOKED|FHF_STARTCOOK|FHF_WIHOLD|FHF_WISTOP|FHF_COOKECHOBLK /*|FHF_COOKBFUL --still full */);
  296.   
  297.               /*  cooked input is available, unblock readers and timers */
  298. ***************
  299. *** 857,860 ****
  300. --- 890,894 ----
  301.       if (NULL == (han->ff_CookBuf = AllocMem(CB_SIZE, MEMF_CLEAR)))
  302.           goto fail;
  303. +     han->ff_CookLen1 = -1;
  304.       /*  lookahead for efficiency */
  305.       /*  Don't start cooked processing, application may switch to raw mode
  306. ***************
  307. *** 937,940 ****
  308. --- 971,975 ----
  309.           long i;
  310.           short rwakeup = 0;
  311. +         short eof = 0;
  312.           char *ptr;
  313.   
  314. ***************
  315. *** 948,954 ****
  316.           for (i = 0; i < n; ++i) {
  317.           switch(ptr[i]) {
  318.           case 13:
  319.           case 10:
  320. !             if (han->ff_CookIdx >= CB_SIZE - 2) {
  321.               han->ff_Flags |= FHF_COOKBFUL;
  322.               n = --i;
  323. --- 983,992 ----
  324.           for (i = 0; i < n; ++i) {
  325.           switch(ptr[i]) {
  326. +         case 28:    /*  28 is ctrl-\ is EOF */
  327. +             eof = 1;
  328. +             /*  special marker. Fall through to save some code */
  329.           case 13:
  330.           case 10:
  331. !             if (han->ff_CookIdx >= CB_SIZE - 1) {
  332.               han->ff_Flags |= FHF_COOKBFUL;
  333.               n = --i;
  334. ***************
  335. *** 962,973 ****
  336.               }
  337.               }
  338. !             /*  split buffer into \0 terminated strings */
  339. !             han->ff_CookBuf[han->ff_CookIdx++] = 0;
  340. !             han->ff_CookBuf[han->ff_CookIdx] = 0;
  341. !             han->ff_LRet = 1;
  342.               rwakeup = 1;
  343.               break;
  344.           case 8:
  345. !             if (han->ff_CookIdx && han->ff_CookBuf[han->ff_CookIdx-1] != 0) {
  346.               if (han->ff_FifoW) {
  347.                   if (WriteFifo(han->ff_FifoW, "\010 \010", 3) != 3) {
  348. --- 1000,1016 ----
  349.               }
  350.               }
  351. !             han->ff_CookBuf[han->ff_CookIdx++] = (eof ? CHAR_EOF : '\n');
  352. !             if (0 > han->ff_CookLen1) {
  353. !             /*  first line is ready, include \n but don't count EOF */
  354. !             han->ff_CookLen1 = han->ff_CookIdx - eof;
  355. !             }
  356. !             han->ff_Flags &= ~FHF_WISTOP;
  357. !             eof = 0;
  358.               rwakeup = 1;
  359.               break;
  360.           case 8:
  361. !             if (han->ff_CookIdx
  362. !               && han->ff_CookBuf[han->ff_CookIdx-1] != '\n'
  363. !               && han->ff_CookBuf[han->ff_CookIdx-1] != CHAR_EOF) {
  364.               if (han->ff_FifoW) {
  365.                   if (WriteFifo(han->ff_FifoW, "\010 \010", 3) != 3) {
  366. ***************
  367. *** 977,987 ****
  368.                   }
  369.               }
  370. !             han->ff_CookBuf[--han->ff_CookIdx] = 0;
  371. !             if (han->ff_CookIdx && han->ff_CookBuf[han->ff_CookIdx-1] == 0)
  372. !                 han->ff_LRet = 1;
  373.               }
  374.               break;
  375.           default:
  376. !             if (han->ff_CookIdx >= CB_SIZE - 2) {
  377.               han->ff_Flags |= FHF_COOKBFUL;
  378.               n = --i;
  379. --- 1020,1056 ----
  380.                   }
  381.               }
  382. !             --han->ff_CookIdx;
  383. !             if (han->ff_CookIdx==0
  384. !               || han->ff_CookBuf[han->ff_CookIdx-1] == '\n'
  385. !               || han->ff_CookBuf[han->ff_CookIdx-1] == CHAR_EOF)
  386. !                 han->ff_Flags &= ~FHF_WISTOP;
  387.               }
  388.               break;
  389. + #if 0
  390. +         case 26:    /*  test signals */
  391. +             SigHandles(han->ff_Node.ln_Name, SIGBREAKF_CTRL_C);
  392. +             break;
  393. + #endif
  394. + #if SIGBREAKB_CTRL_F - SIGBREAKB_CTRL_C == 3
  395. +         case 3: case 4: case 5: case 6:
  396. +             SigHandles(han->ff_Node.ln_Name, 1L<<(ptr[i]-3+SIGBREAKB_CTRL_C));
  397. +             break;
  398. + #else
  399. +         /*  who says the above is not portable? */
  400. +         case 3:
  401. +             SigHandles(han->ff_Node.ln_Name, SIGBREAKF_CTRL_C);
  402. +             break;
  403. +         case 4:
  404. +             SigHandles(han->ff_Node.ln_Name, SIGBREAKF_CTRL_D);
  405. +             break;
  406. +         case 5:
  407. +             SigHandles(han->ff_Node.ln_Name, SIGBREAKF_CTRL_E);
  408. +             break;
  409. +         case 6:
  410. +             SigHandles(han->ff_Node.ln_Name, SIGBREAKF_CTRL_F);
  411. +             break;
  412. + #endif
  413.           default:
  414. !             if (han->ff_CookIdx >= CB_SIZE - 1) {
  415.               han->ff_Flags |= FHF_COOKBFUL;
  416.               n = --i;
  417. ***************
  418. *** 996,1001 ****
  419.               }
  420.               han->ff_CookBuf[han->ff_CookIdx++] = ptr[i];
  421. !             han->ff_CookBuf[han->ff_CookIdx] = 0;
  422. !             han->ff_LRet = 0;
  423.               break;
  424.           }
  425. --- 1065,1069 ----
  426.               }
  427.               han->ff_CookBuf[han->ff_CookIdx++] = ptr[i];
  428. !             han->ff_Flags |= FHF_WISTOP;
  429.               break;
  430.           }
  431. ***************
  432. *** 1007,1011 ****
  433.            */
  434.   
  435. !         if ((han->ff_Flags & FHF_WIHOLD) && (han->ff_LRet || han->ff_CookIdx == 0)) {
  436.           han->ff_Flags &= ~FHF_WIHOLD;
  437.           while ((msg = (Message *)RemHead((MaxList *)&han->ff_WrWait)))
  438. --- 1075,1079 ----
  439.            */
  440.   
  441. !         if ((han->ff_Flags & FHF_WIHOLD) && !(han->ff_Flags & FHF_WISTOP)) {
  442.           han->ff_Flags &= ~FHF_WIHOLD;
  443.           while ((msg = (Message *)RemHead((MaxList *)&han->ff_WrWait)))
  444. Only in : fifo-handler.o
  445. Only in : fifo.o
  446. Only in : fifolist.c
  447. Only in : FILES
  448. Only in : FILES-bin
  449. Only in : FILES-src
  450. diff -c2 unused:source/fifolib382/handler.h handler.h
  451. *** unused:source/fifolib382/handler.h    Mon May 13 23:07:34 1996
  452. --- handler.h    Wed Aug 28 21:43:35 1996
  453. ***************
  454. *** 136,139 ****
  455. --- 136,141 ----
  456.   #define DOS_FALSE   0
  457.   
  458. + #define CHAR_EOF    '\034'
  459.   #define CB_SIZE     1024    /*  lines buffer */
  460.   #define FIFO_SIZE   2048
  461. ***************
  462. *** 167,171 ****
  463.       MaxNode    ff_Node;    /*    fifo node, ln_name holds fifo name */
  464.       short    ff_Flags;
  465. !     short    ff_Refs;    /*    open refs   */
  466.       SharRead    *ff_SRead;  /*    fifo handle for reading */
  467.       void    *ff_FifoW;  /*    fifo handle for writing */
  468. --- 169,173 ----
  469.       MaxNode    ff_Node;    /*    fifo node, ln_name holds fifo name */
  470.       short    ff_Flags;
  471. !     /* now longword aligned */
  472.       SharRead    *ff_SRead;  /*    fifo handle for reading */
  473.       void    *ff_FifoW;  /*    fifo handle for writing */
  474. ***************
  475. *** 178,183 ****
  476.       char    *ff_CookBuf;/*    cooked buffer handling        */
  477.       short    ff_CookIdx;
  478. !     short    ff_LRet;
  479.       MsgPort    *ff_SigPort;/*    message port instead of task to signal */
  480.   } FHan;
  481.   
  482. --- 180,186 ----
  483.       char    *ff_CookBuf;/*    cooked buffer handling        */
  484.       short    ff_CookIdx;
  485. !     short    ff_Refs;    /*    open refs   */
  486.       MsgPort    *ff_SigPort;/*    message port instead of task to signal */
  487. +     short    ff_CookLen1;/*  length of full first line of input */
  488.   } FHan;
  489.   
  490. ***************
  491. *** 184,188 ****
  492.   #define ff_FifoR    ff_SRead->sr_FifoR
  493.   
  494. ! #define FHF_COOKED    0x0001
  495.   #define FHF_RPEND    0x0002
  496.   #define FHF_WAVAIL    0x0004
  497. --- 187,191 ----
  498.   #define ff_FifoR    ff_SRead->sr_FifoR
  499.   
  500. ! #define FHF_TEE     0x0001
  501.   #define FHF_RPEND    0x0002
  502.   #define FHF_WAVAIL    0x0004
  503. ***************
  504. *** 191,195 ****
  505.   #define FHF_CLOSEEOF    0x0020
  506.   #define FHF_MASTER    0x0040
  507. ! #define FHF_TEE     0x0080
  508.   #define FHF_SHELL    0x0100
  509.   #define FHF_COOKBFUL    0x0200        /*    cooked buffer is full    */
  510. --- 194,198 ----
  511.   #define FHF_CLOSEEOF    0x0020
  512.   #define FHF_MASTER    0x0040
  513. ! #define FHF_COOKED    0x0080
  514.   #define FHF_SHELL    0x0100
  515.   #define FHF_COOKBFUL    0x0200        /*    cooked buffer is full    */
  516. ***************
  517. *** 198,202 ****
  518.   #define FHF_WIHOLD    0x1000        /*    write hold due to input */
  519.   #define FHF_COOKCRLF    0x2000        /*    need to write CRLF    */
  520. ! #define FHF_RREQUIRED    0x4000
  521.   #define FHF_STARTCOOK    0x8000        /*    start cooked processing */
  522.   
  523. --- 201,205 ----
  524.   #define FHF_WIHOLD    0x1000        /*    write hold due to input */
  525.   #define FHF_COOKCRLF    0x2000        /*    need to write CRLF    */
  526. ! #define FHF_WISTOP    0x4000        /*    delay write due to input */
  527.   #define FHF_STARTCOOK    0x8000        /*    start cooked processing */
  528.   
  529. Only in : htag.o
  530. Common subdirectories: unused:source/fifolib382/inline and inline
  531. Common subdirectories: unused:source/fifolib382/inlinef and inlinef
  532. Common subdirectories: unused:source/fifolib382/l and l
  533. Common subdirectories: unused:source/fifolib382/lib and lib
  534. Only in : lib.o
  535. Common subdirectories: unused:source/fifolib382/libraries and libraries
  536. Common subdirectories: unused:source/fifolib382/libs and libs
  537. Common subdirectories: unused:source/fifolib382/proto and proto
  538. Only in : remcli.o
  539. Only in : t.exp
  540. Only in : tag.o
  541. Only in : testfifo
  542. Only in : testfifo.o
  543. Only in : tests
  544.